<?php

namespace Org\Util;

use Com\Rsa\Rsa;

/**
 * RSA加密工具类
 * @modify trainyao 2015-09-27 创建
 */
class RSAEncrypt {

    /**
     * RSA工作对象
     * @var stdClass
     * @access private
     */
    private $rsaObject = NULL;

    /**
     * 构造函数
     * 创建一个RSA加密工具对象
     * @modify trainyao 2015-09-27 创建
     * @param string $keyPath  密钥文件路径
     */
    public function __construct($keyPath = MEIZHU_RSA_PATH) {
        $this->rsaObject = new RSA($keyPath);
    }

    /**
     * 加密内容
     * @modify trainyao 2015-09-27 创建
     * @param string $content 加密内容
     * @param string $path 密钥文件所在的路径
     * @return mixed 加密后的内容,加密失败返回NULL
     */
    public function Encrypt($content, $path) {
        $this->rsaObject->setKeyPath($path);
        if (empty($this->rsaObject)) {
            return NULL;
        }
        return $this->rsaObject->pubEncrypt($content);
    }

    /**
     * 解密内容
     * @modify trainyao 2015-09-27 创建
     * @param string $content 待解密字符串
     * @param string $path 密钥文件所在的路径
     * @return mixed 解密后的内容,解密失败返回NULL
     */
    public function Decrypt($content, $path) {
        $this->rsaObject->setKeyPath($path);
        if (empty($this->rsaObject)) {
            return NULL;
        }
        return $this->rsaObject->privDecrypt($content);
    }

    /**
     * 锁掌柜加密
     * @modify trainyao 2015-09-27 创建
     * @param string $content 待加密字符串
     * @return mixed 加密后的内容
     */
    public function meizhuEncrypt($content) {
        return $this->Encrypt($content, MEIZHU_RSA_PATH);
    }

    /**
     * 锁掌柜解密
     * @modify trainyao 2015-09-27 创建
     * @param string $content 待解密字符串
     * @return mixed 解密后的内容
     */
    public function meizhuDecrypt($content) {
        return $this->Decrypt($content, MEIZHU_RSA_PATH);
    }

    /**
     * 美住加密
     * @modify zane 2017-9-20 创建
     * @param string $content 待解密字符串
     * @return mixed 加密后的内容
     */
    public function verifyEncrypt($content) {
        $this->rsaObject->setKeyPath(MEIZHU_RSA_PATH);
        if(empty($this->rsaObject)) {
            return NULL;
        }
        return $this->rsaObject->privEncrypt($content);
    }
}
